<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div id="app"></div>

  <script src="../js/react.development.js"></script>
  <script src="../js/react-dom.development.js"></script>
  <script src="../js/babel.min.js"></script>
  <script src="../js/prop-types.js"></script>
  <script type="text/babel">

    class Form extends React.Component{
      state = {
        username:'',
        password:''
      }
      handleLogin = (e)=>{

        e.preventDefault()
        const { username,password} = this.state
        alert(`表单提交的用户名是 ${username}，密码是 ${password}`)
      }
      /*
        高阶函数：如果一个函数符合下面2个规范中的一个那么该函数就是高阶函数
          1 A函数，接受的参数是一个函数，那么A就是高阶函数
          2 A函数，通过函数调用继续返回值依然是一个函数，那么A也是高阶函数

          函数的柯里化，通过函数调用继续返回函数的方式，实现多次接受参数，最后统一处理的函数编码形式
      */
      saveFormData = (dataType)=>{
        console.log(dataType);
        return (event)=>{
          this.setState({
            [dataType]:event.target.value
          })
        }
      }
      

      render(){
        return(
          <form onSubmit={this.handleLogin}>
            用户名：<input onChange={this.saveFormData("username")} type="text" name="username" /> <br/>
            密  码：<input onChange={this.saveFormData("password")} type="text" name="password"/> <br/>
            <input type="submit"/>
          </form>
        )
      }
    }

    ReactDOM.render(<Form/>,document.getElementById("app"))
  </script>
</body>

</html>